C -> アロー演算子

提供:yonewiki

C++へ戻る


本来の表記は「C -> アロー演算子」です。この記事に付けられた題名はテンプレート:記事名の制約から不正確なものとなっています。

※このページではC言語にも存在していたという意味で記事タイトルがC -> アロー演算子になっていますが、
C++でも同様です。C++だけの機能がある場合は明記します。

アロー演算子

アロー演算子"->"は、クラスのメンバ変数やメンバ関数、構造体のメンバ変数を記述する際、
クラス変数や、構造体変数のポインタを使って、例えば、pというポインタ変数を使ってnというメンバ変数を指定する場合、

(*p).n;

と記述しますが、アロー演算子を使うことにより

p->n;

と置き換えることが出来ます。アロー演算子を使った表記が流行していますので、もはや、もともとの記述の方がよくわからないという印象もあるのかもしれません。
ポインタ p に対して *p って書くとアドレスの中身を返してくれるものだったことは、忘れちゃいけないよ。
ポインタ変数を宣言するときは (型名 *P) って書くのでした。
ポインタではない、型名で宣言した変数 f に対して、アドレスを取得するときは &f みたいに "&" アドレス演算子をつけるんだ。


pが配列ならカッコが必要になります。p + i (配列番号 i)だとしたら

(*(p + i)).n;
(p + i)->n

カッコがなければメンバ名がiという変数にぶら下がっているとも判断できるので、仕方ないですね。カッコがないとコンパイルエラーになるはずです。


添え字番号に[]を使うと

(p[i]).n;
(&p[i])->n

となるでしょう。


C++へ戻る